/**
 * 将date转为日期字符串，格式为《2019/12/02 10:00:00》
 */
const formatTime = date => {
    const year = date.getFullYear()
    const month = date.getMonth() + 1
    const day = date.getDate()
    const hour = date.getHours()
    const minute = date.getMinutes()
    const second = date.getSeconds()

    return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

//将年月格式化为字符串，格式为《202001》
const formatYearMonth = date => {
    const year = date.getFullYear()
    const month = date.getMonth() + 1

    return [year, month].map(formatNumber).join('')
}

const formatNumber = n => {
    n = n.toString()
    return n[1] ? n : '0' + n
}

/**
 * 将毫秒数转换为日期字符串，格式为《2019-12-02 10:00:00》
 */
const convertMillisecond_toDatetimeStr = (millisecond) => {

    let date = new Date(millisecond)
    //获取年月日时分秒
    const year = date.getFullYear()
    const month = date.getMonth() + 1
    const day = date.getDate()
    const hour = date.getHours()
    const minute = date.getMinutes()
    const second = date.getSeconds()
    //
    let datestr = [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
    return datestr
}

/**
 * 将毫秒数转换为日期字符串，格式为《2019-12-02》
 */
const convertMillisecond_toDateStr = (millisecond) => {

    let date = new Date(millisecond)
    //获取年月日时分秒
    const year = date.getFullYear()
    const month = date.getMonth() + 1
    const day = date.getDate()
    //
    let datestr = [year, month, day].map(formatNumber).join('-')
    return datestr
}

/**
 * 给一日期增加给定天数，并返回该日期对应的字符串，格式为《2019-12-05》。
 */
const addDay_toDate = (date, addDay) => {
    let millisecond = date.valueOf() + addDay * 24 * 60 * 60 * 1000
    let dateNew_str = convertMillisecond_toDateStr(millisecond)
    return dateNew_str
}

/**
 * 获取当前日期，格式为《2020-02-08》
 * @param {*} data 
 */
const getCurrentDate=()=>{
    let now=new Date()
    let year=now.getFullYear()
    let month=now.getMonth()+1
    let day_month=now.getDate()
    let datestr = [year, month, day_month].map(formatNumber).join('-')
    return datestr
}



/**
 * 分析传入的对象是否为空。_bycjw
 */
const isEmpty = (data) => {
    if (data == null || data.toString().trim() == '') {
        return true;
    } else {
        return false;
    }
}

// 在控制台展示data信息。by_cjw
const prettyPrint = (prefix, data) => {
    let str = JSON.stringify(data, null, " ");
    let str2 = prefix + "=" + str;
    console.log(str2);
}

//进度框loading
const showLoading = (msg) => {
    let title = new String(msg)
    wx.showLoading({
        title: title,
        mask: true
    })
}

//显示提示信息
const showToast = (title = '', icon = 'none', duration = 2000) => {
    wx.showToast({
        title: title,
        icon: icon,
        duration: duration
    })
}

/**
 * 显示提示信息，若message含有信息，显示message信息;否则显示title信息。
 * @param {*} title 
 * @param {*} message 
 */
const showToastWithMsg = (title='', message='') => {
    let message_final=title
    if(!isEmpty(message)){
        message_final=message
    }
    showToast(message_final)
}

/**
 * 获取长度为length的"0"字符串。
 */
const getZeroStr = (length = 0) => {
    let str = ""
    for (let i = 0; i < length; i++) {
        str = str + "0"
    }
    return str
}

/**
 * 获取给定最小长度(length)的数字字符串(numStr)。
 * 若数字的长度小于"给定最小长度",相差位数以"0"补充,并作为前缀。
 */
const getNumStr_withLength = (num = 0, length = 2) => {
    //若num为空字符串
    let numStr = ""
    if (isEmpty(num) == true) {
        numStr = getZeroStr(length)
        return numStr
    }

    let numLength = num.toString().length

    //若numLength>=length
    if (numLength >= length) {
        return num.toString()
    } else {
        //若numLength<length
        let length_need = length - numLength
        let strPrefix = getZeroStr(length_need)
        numStr = strPrefix + num.toString()
        return numStr
    }
}


/**
 * 需导出的方法
 */
module.exports = {
    //将date转为日期字符串，格式为《2019/12/02 10:00:00》
    formatTime: formatTime,

    //将年月格式化字符串，格式为202001
    formatYearMonth: formatYearMonth,
    formatNumber: formatNumber,

    //将毫秒数转换为日期字符串，格式为《2019-12-02 10:00:00》
    convertMillisecond_toDatetimeStr: convertMillisecond_toDatetimeStr,

    /**
     * 将毫秒数转换为日期字符串，格式为《2019-12-02》
     */
    convertMillisecond_toDateStr: convertMillisecond_toDateStr,

    /**
     * 给一日期增加给定天数，并返回该日期对应的字符串，格式为《2019-12-05》。
     */
    addDay_toDate: addDay_toDate,
    
    /**
     * 获取当前日期，格式《2020-02-08》。
     */
    getCurrentDate: getCurrentDate,



    /**
     * 分析传入的对象是否为空。_bycjw
     */
    isEmpty: isEmpty,


    /**
     * 在控制台展示data信息。by_cjw
     */
    prettyPrint: prettyPrint,

    /**
     * 进度框loading
     */
    showLoading: showLoading,

    /**
     * 显示提示信息
     */
    showToast: showToast,

    /**
     * 显示提示信息，若message含有信息，显示message信息;否则显示title信息。
     */
    showToastWithMsg: showToastWithMsg,

    /**
     * 获取长度为length的"0"字符串。
     */
    getZeroStr: getZeroStr,

    /**
     * 获取给定最小长度(length)的数字字符串(numStr)。
     */
    getNumStr_withLength: getNumStr_withLength


}